<?php
/**
 * Permite hacer operaciones con la tabla venta de la base de datos
 * @package simertweb 
 * @subpackage models 
 * @category Recaudación
 * @author Grecia Espinoza <mrcl2587@gmail.com>
 * @author Juan Maldonado  <jgmaldonadoj@gmail.com>
 * @version 1.0  
 */
class Mventas extends CI_Model {

    function __construct() {
        parent::__construct();
        $this->load->database();
        $this->load->model('mhistorico');
        $this->load->model('mseries');
    }

    /**
     * Obtiene la última serie de la venta de tarjetas prepago SIMERT realizadas
     * @return type
     */
    function obtener_ultima_venta2() {
        $query = $this->db->get('venta');
        $num = $query->num_rows();
        $row = $query->row($num - 1)->serie + $query->row($num - 1)->cantidad;
        return $row;
    }

    /**
     * Obtiene la última venta de tarjetas que se ha realizado
     * @return type array
     */
    function obtener_ultima_venta() {
        return mysql_query("SELECT MAX(serie) FROM venta");
    }

    /**
     * Devuelve el total de la venta de tarjetas prepago SIMERT
     * @param type $cant es la cantidad de tarjetas
     * @param type $serie es la serie de inicio de la tarjetas
     * @param type $idProv es el id del cliente
     * @return array
     */
    function calcularPrecio($cant, $serie, $idProv) {
        //guarda el valor del estacionamiento por 
        $valor = $this->db->get('tarifa')->row()->estacionamiento;
        $precio = $cant * $valor * 6;

        $this->db->where('idProveedor', $idProv);
        $proveedor = $this->db->get('proveedor')->row();
        $desc = $proveedor->descuento;
        $idPersona = $proveedor->Persona_idPersona;
        $this->db->where('idPersona', $idPersona);
        $persona = $this->db->get('persona')->row();

        if ($desc == 0) {
            $descuento = 0;
            $total = $precio;
        } else {
            $descuento = $precio * $desc / 100;
            $total = $precio - $descuento;
        }

        $datos = array(
            'idProv' => $proveedor->idProveedor,
            'cliente' => $persona->nombre . ' ' . $persona->apellido,
            'cantidad' => $cant,
            'serie' => $serie,
            'precio' => $precio,
            'des' => $desc,
            'descuento' => round($descuento, 2, PHP_ROUND_HALF_UP),
            'total' => round($total, 2, PHP_ROUND_HALF_UP),
            'mensaje' => ''
        );
        return $datos;
    }

    /**
     * Guarda una venta de tarjetas prepago SIMERT
     * @param type $idPro es el id del cliente
     * @param type $cant es la cantidad de tarjetas
     * @param type $serie es la serie de inicio de las tarjetas
     * @param type $precio es el el precio unitario
     * @param type $desc es el decuento
     * @param type $total es el total de la venta
     */
    function guardarVenta($idPro, $cant, $serie, $precio, $desc, $total) {
        date_default_timezone_set('America/Guayaquil');
        $fecha = date('Y-m-d');

        $this->db->where('idProveedor', $idPro);
        $proveedor = $this->db->get('proveedor')->row();

        $datos = array(
            'cantidad' => $cant,
            'serie' => $serie,
            'descuento' => round($desc, 2, PHP_ROUND_HALF_UP),
            'precio' => $precio,
            'total' => round($total, 2, PHP_ROUND_HALF_UP),
            'fechaPago' => $fecha,
            'Tarifa_idTarifa' => 1,
            'Proveedor_idProveedor' => $idPro,
            'Proveedor_Persona_idPersona' => $proveedor->Persona_idPersona
        );
        $this->db->insert('venta', $datos);
        $id = mysql_insert_id();
        $this->mhistorico->guardar_acceso($id, "Venta de tarjetas realizada");
    }

    /**
     * Verifica que la serie de tarjetas ingresada sea correcta
     * @param type $inicio es el inico de la serie
     * @param type  es el fin de la serie
     * @return int
     */
    function serieFinal($inicio, $fin) {
        $bandera = 0;
        $series = $this->mseries->series();
        $serie = 0;
        foreach ($series as $value) {
            $serie = $value->hasta;
        }

        //comprueba que la serie ingresada no este ya vendida.
        $ventas = $this->db->get('venta')->result();
        $valor = 0; //almacenarÃ¡ el valor mas alto de la serie de tarjetas vendidas
        foreach ($ventas as $value) {
            if ($valor <= ($value->serie + $value->cantidad - 1)) {
                $valor = $value->serie + $value->cantidad - 1;
            }
        }

        if ($serie >= $inicio && $serie >= $fin) {
            if ($valor < $inicio) {
                $bandera = 1;
            }
        }
        return $bandera;
    }

    /**
     * Obtiene los datos del cliente de tarjetas prepago SIMERT
     * @param type $idProv es el id del proveedor
     * @return type array
     */
    function serieIncorrecta($idProv) {
        $this->db->where('idProveedor', $idProv);
        $proveedor = $this->db->get('proveedor')->row();
        $desc = $proveedor->descuento;
        $idPersona = $proveedor->Persona_idPersona;
        $this->db->where('idPersona', $idPersona);
        $persona = $this->db->get('persona')->row();

        $datos = array(
            'idProv' => $proveedor->idProveedor,
            'cliente' => $persona->nombre . ' ' . $persona->apellido,
            'cantidad' => '',
            'serie' => '',
            'precio' => '',
            'des' => $desc,
            'descuento' => $desc,
            'total' => '',
            'mensaje' => 'serie incorrecta'
        );
        return $datos;
    }

    /**
     * Obtiene los totales de las ventas del 0%, 5% y 15% de una lista de ventas
     * de tarjetas prepago SIMERT
     * @param type $query es la lista de ventas
     * @return type array
     */
    function devolver_totales($query) {
        for ($i = 0; $i <= count($query); $i++) {            
            print_r($query[$i]['cantidad']);
            $cant = $query[$i]['cantidad'];
            $tcant = $tcant + $cant;
            $precio = $query[$i]['precio'] * $cant;
            $tprecio += $precio;
            $desc = $query[$i]['tdesc'];
            $tdesc += $desc;
            $total = $query[$i]['total'];
            $ttotal += $total;
        }
        return $data = array(
            $tcant . "",
            'yy',
            $tprecio . "",
            'tt',
            $tdesc . "",
            $ttotal . "",
        );
    }

    /**
     * Obtiene el total de ventas de tarjetas realizadas en un día
     * @param type $fecha es la fecha del reporte
     * @return array
     */
    function ventaDiaria($fecha) {
        $this->db->where('fechaPago', $fecha);
        $ventas = $this->db->get('venta')->result();
        $ventaDiaria = array();
        foreach ($ventas as $value) {
            $uno = array(
                'fecha' => $fecha,
                'cantidad' => $value->cantidad,
                'serie' => ($value->serie . '-' . ($value->serie + $value->cantidad - 1)),
                'precio' => ($value->precio / $value->cantidad),
                'tprecio' => $value->precio, //precio total de las tarjetas sin descuento
                'desc' => ($value->descuento / $value->precio) * 100,
                'tdesc' => $value->descuento,
                'total' => $value->precio - $value->descuento //precio total de las tarjetas con descuento
            );
            array_push($ventaDiaria, $uno);
        }
        return $ventaDiaria;
    }

    /**
     * Obtien las ventas de tarjetas prepago SIMERT
     * @param type $inicio es la fecha de inicio del reporte
     * @param type $fin es la fecha de finalización del reporte
     * @return array
     */

    function ventaFecha($inicio, $fin) {
        //$fechaInicio = strtotime($inicio);
        //$fechaFin = strtotime($fin);
        //$count = ($fechaFin - $fechaInicio) / 86400;
        //$VD = array(); //venta diario

        $cant1 = 0; //almacena la cantidad del descuento del 0%
        $cant2 = 0; //almacena la cantidad del descuento del 0%
        $cant3 = 0; //almacena la cantidad del descuento del 0%

        $descuento1 = 0;
        $descuento2 = 0;
        $descuento3 = 0;

        $precio1 = 0;
        $precio2 = 0;
        $precio3 = 0;

        $total1 = 0;
        $total2 = 0;
        $total3 = 0;

        $this->db->where('fechaPago >=', $inicio);
        $this->db->where('fechaPago <=', $fin);
        $ventas = $this->db->get('venta')->result();
        //recorre las ventas
        foreach ($ventas as $VD) {
            if (!empty($VD)) {
                $desc = $VD->descuento * 100 / $VD->precio;
                if ($desc == 0) {
                    $cant1 += $VD->cantidad;
                    $precio1 += $VD->precio;
                    $descuento1 += $VD->descuento;
                    $total1 += $VD->total;
                } elseif ($desc == 5) {
                    $cant2 += $VD->cantidad;
                    $precio2 += $VD->precio;
                    $descuento2 += $VD->descuento;
                    $total2 += $VD->total;
                } elseif ($desc == 15) {
                    $cant3 += $VD->cantidad;
                    $precio3 += $VD->precio;
                    $descuento3 += $VD->descuento;
                    $total3 += $VD->total;
                }
            }
        }
        $array = array(
            'fecha' => $inicio . ' hasta ' . $fin,
            'cant1' => $cant1,
            'cant2' => $cant2,
            'cant3' => $cant3,
            'precio1' => $precio1,
            'precio2' => $precio2,
            'precio3' => $precio3,
            'descuento1' => $descuento1,
            'descuento2' => $descuento2,
            'descuento3' => $descuento3,
            'total1' => $total1,
            'total2' => $total2,
            'total3' => $total3
        );
        $ventas2 = array();
        array_push($ventas2, $array);
        return $ventas2;
    }

}

?>
